//导入请求js
import {
  request
} from '../../request/index.js'
import regeneratorRuntime from '../../lib/runtime/runtime';
// pages/goods_detail/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 商品详情数据
    goodsDetail: {},
    //收藏控制
    collectFlag: false
  },
  //商品id
  goodsId: '',
  //商品详情数据
  goodsInfo: {},
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log(options)
    this.goodsId = options.goods_id
    //获取商品详情数据
    this.getGoodsDetail()
  },
  onShow() {
    //获取缓存中的收藏列表数据
    const collects = wx.getStorageSync('collects') || [];
    //判断collects中是否有该商品
    /**
     * 有该商品就把收藏图标设置为红色
     */
    collects.forEach(v => {
      if (v.goods_id === parseInt(this.goodsId)) {
        this.setData({
          collectFlag: true
        })
      }
    })

  },
  //获取商品详情页面
  async getGoodsDetail() {
    const res = await request({
      url: `/goods/detail?goods_id=${this.goodsId}`
    })
    console.log(res)
    this.goodsInfo = res
    this.setData({
      goodsDetail: {
        goods_name: res.goods_name,
        goods_price: res.goods_price,
        // iphone部分手机 不识别 webp图片格式 
        // 最好找到后台 让他进行修改 
        // 临时自己改 确保后台存在 1.webp => 1.jpg 
        goods_introduce: res.goods_introduce.replace(/\.webp/g, '.jpg'),
        pics: res.pics,
        goods_id: res.goods_id,
        goods_small_logo: res.goods_small_logo
      }
    })
    //获取浏览足迹数据
    const history = wx.getStorageSync('history') || [];
    //判断数据中心是否已经包含该商品数据
    const index = history.findIndex(i => i.goods_id === res.goods_id)
    console.log(index)
    if (index !== -1) {
      //删除history中该条商品数据
      history.splice(index, 1)
    }
    //再把该商品添加history的最前面
    history.unshift(this.data.goodsDetail)
    wx.setStorageSync('history', history);
  },
  //预览图片
  previewImage(e) {
    // console.log('预览')
    //接收点击的的图片路径
    const current = e.currentTarget.dataset.url
    //先构造要预览的图片数组
    const urls = this.goodsInfo.pics.map(v => v.pics_mid)
    wx.previewImage({
      current,
      urls
    });
  },
  //下拉刷新触发事件
  onPullDownRefresh() {
    wx.showLoading({
      title: '加载中',
      duration: 1000,
      mask: true
    });
    //清空商品数据
    this.setData({
      goodsDetail: {}
    })
    setTimeout(() => {
      //再次发生请求
      this.getGoodsDetail()
      wx.stopPullDownRefresh()
      wx.hideLoading();
    }, 1000)
  },
  //添加购物车
  /*
    功能分析：
      1.添加点击事件
      2.从本地存储获取购物车中的数据 数组格式
      3.判断要添加的商品在购物车中是否已经存在
        3.1存在就把这个商品的num++
        3.2不存在就设置num为1
      4.把修改之后的数据重新填回缓存中
      6.弹框显示加入成功
  */
  handleCartAdd() {
    // console.log('添加购物车')
    //获取本地存储的购物车数组
    this.addCart()
    wx.showToast({
      title: '加入成功',
      duration: 1000,
      icon: 'success',
      mask: true,
    });
  },
  //点击立即购买
  buyNow() {
    //获取购物车数据
    this.addCart()
  },
  addCart() {
    //获取本地存储的购物车数组
    let carts = wx.getStorageSync('carts') || [];
    //判断购物车中是否有该商品
    let index = carts.findIndex(item => item.goods_id === this.goodsInfo.goods_id)
    if (index === -1) {
      //购物车中没有该商品
      //给goodsInfo添加属性num:1还有选中
      this.goodsInfo.num = 1
      this.goodsInfo.checked = true
      carts.push(this.goodsInfo)
    } else {
      //购物车中有该商品
      //num++
      carts[index].num++
    }
    //把修改之后的数据重新填回缓冲中
    wx.setStorageSync('carts', carts);
  },
  //点击收藏触发
  /**
   * 思路：
   * 1.添加点击事件
   * 2.点击之后把collectFlag取反
   * 3.获取缓存中的收藏数据collects
   * 4.判断collectFlag
   * 5.collectFlag为true
   * 6.就把当前的商品goodsInfo添加到collects中
   * 7.collectFlag为false
   * 8.删除collects集合中该商品数据
   * 9.最后把修改的数据重新存回缓存中
   */
  handleCollect() {
    //1.把collectFlag取反
    this.setData({
      collectFlag: !this.data.collectFlag
    })
    //2.获取缓存中的收藏列表数据
    const collects = wx.getStorageSync('collects') || [];
    //判断collectFlag是否为true
    if (this.data.collectFlag) {
      //为true，把商品详情数据添加到collects中
      collects.push(this.goodsInfo)
      wx.showToast({
        title: '收藏成功',
        icon: 'success',
        duration: 1000,
        mask: true
      });
    } else {
      const index = collects.findIndex(v => v.goods_id = this.goodsId)
      if (index !== -1) {
        wx.showToast({
          title: '取消收藏',
          icon: 'success',
          duration: 1000,
          mask: true
        });
        collects.splice(index, 1)
      }
    }
    //把数据存回缓存
    wx.setStorageSync('collects', collects);
  }
})